package com.xtaller.sdboot.core;

/**
 * @author : Taller
 * @date : 2020/1/21 00:25
 * @Description : 状态码定义
 */
public enum Status {
    /***
     * 请求处理成功
     */
    OK(0, "操作成功"),

    /***
     * 部分成功（一般用于批量处理场景，只处理筛选后的合法数据）
     */
    WARN_PARTIAL_SUCCESS(1001, "部分成功"),

    /***
     * 有潜在的性能问题
     */
    WARN_PERFORMANCE_ISSUE(1002, "潜在的性能问题"),

    /***
     * 传入参数不对
     */
    FAIL_INVALID_PARAM(400, "请求参数不匹配"),
    /***
     * 请求错误
     */
    BAD_REQUEST(400, "请求错误"),
    /***
     * Token无效或已过期
     */
    FAIL_INVALID_TOKEN(401, "Token无效或已过期"),

    /***
     * 没有权限执行该操作
     */
    FAIL_NO_PERMISSION(403, "无权执行该操作"),

    /***
     * 请求资源不存在
     */
    FAIL_NOT_FOUND(404, "请求资源不存在"),

    /***
     * 数据校验不通过
     */
    FAIL_VALIDATION(405, "数据校验不通过"),
    /***
     * 数据校验不通过
     */
    METHOD_NOT_ALLOWED(405, "请求类型错误"),

    /***
     * 操作执行失败
     */
    FAIL_OPERATION(406, "操作执行失败"),

    /***
     * 请求错误
     */
    UNSUPPORTED_MEDIA_TYPE(415, "数据类型错误"),

    /***
     * 系统异常
     */
    FAIL_EXCEPTION(500, "系统异常"),

    /***
     * 系统异常
     */
    INTERNAL_SERVER_ERROR(500, "服务异常"),


    /***
     * 缓存清空
     */
    MEMORY_EMPTY_LOST(9999, "缓存清空");

    private int code;
    private String label;
    Status(int code, String label){
        this.code = code;
        this.label = label;
    }
    public int code(){
        return this.code;
    }
    public String label(){
        return this.label;
    }
    public static int getCode(String value){
        for(Status eu : Status.values()){
            if(eu.name().equals(value)){
                return eu.code();
            }
        }
        return 0;
    }
    public static String getLabel(String value){
        for(Status eu : Status.values()){
            if(eu.name().equals(value)){
                return eu.label();
            }
        }
        return null;
    }
}
